<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>v_mix: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">v_mix
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">v_mix Documentation</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>This header file contains layer 2 API's of the mixer core driver.The functions contained herein provides a high level implementation of features provided by the IP, abstracting away the register level details from the user</p>
<p><b>Mixer IP Features </b></p>
<p>The Mixer IP supports following features</p>
<ul>
<li>AXI4-S Master Layer</li>
<li>Up to 8 optional layers (user configurable)</li>
<li>Each layer can be configured as Streaming or Memory (build time)<ul>
<li>Color format for each layer is set at build time</li>
</ul>
</li>
<li>1 Logo Layer (optional)</li>
<li>Logo Layer Color Key feature (optional)</li>
<li>Alpha Level (8 bit) per layer (optional)</li>
<li>Scale (1x, 2x, 4x) capability per layer (optional)</li>
</ul>
<p><b>Dependency</b></p>
<p>This driver makes use of the video enumerations and data types defined in the Xilinx Video Common Driver (video_common_vX.x) and as such the common driver must be included as dependency to compile this driver</p>
<p><b>Initialization &amp; Configuration</b></p>
<p>The device driver enables higher layer software (e.g., an application) to communicate with the mixer core.</p>
<p>Driver is built with layered architecture</p>
<ul>
<li>Layer 1 provides API's to peek/poke registers at HW level.</li>
<li>Layer 2 provides API's that abstract sub-core functionality, providing an easy to use feature interface</li>
</ul>
<p>Before using the layer-2 API's user must initialize the core by calling API <a class="el" href="group__v__mix.html#ga58ff6dc9ac3a65cb92e5f975846e1e09" title="This function initializes the core instance. ">XVMix_Initialize()</a>. This function will look for a configuration structure for the device and initialize it to defined HW settings. It is recommended user always make use of Layer-2 API to interact with this core. Advanced users always have the capability to directly interact with the IP core using Layer-1 API's that perform low level register peek/poke.</p>
<p><b>Pre-Requisite's</b></p>
<p>If optional layers are included in the IP then</p>
<ul>
<li>Application must set the memory address for each layer using provided API Address must be aligned to memory width. This can be computed with following equation Align = 2 * PPC * 4 Bytes (where PPC is the Pixels/Clock selected in IP configuration)</li>
<li>When setting up layer window the Stride must be provided in Bytes and must be aligned to respective color space of the layer. This can be computed with following equation StrideInBytes = (Window_Width * (YUV422 ? 2 : 4))</li>
</ul>
<p><b> Interrupts </b></p>
<p>Driver is configured to operate both in polling as well as interrupt mode.</p>
<ul>
<li>To use interrupt based processing, application must set up the system's interrupt controller and connect the XVMix_InterruptHandler function to service interrupts. Next interrupts must be enabled using the provided API. When an interrupt occurs, ISR will confirm if frame processing is is done. If call back is registered such function will be called and application can apply new setting updates here. Subsequently next frame processing will be triggered with new settings.</li>
<li>To use polling method disable interrupts using the provided API. Doing so will configure the IP to keep processing frames without sw intervention.</li>
<li>Polling mode is the default configuration set during driver initialization</li>
</ul>
<p><b> Virtual Memory </b></p>
<p>This driver supports Virtual Memory. The RTOS is responsible for calculating the correct device base address in Virtual Memory space.</p>
<p><b> Threads </b></p>
<p>This driver is not thread safe. Any needs for threads or thread mutual exclusion must be satisfied by the layer above this driver.</p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who    Date     Changes
</p>
<hr/>
<p>
1.00  rco   10/29/15   Initial Release
            12/14/15   Added interrupt handler
            02/12/16   Added Stride and memory Alignement requirements
            02/25/16   Replace GetColorFromat function with a macro
            03/08/16   Replace GetColorFromat macro with function and added
                       master layer video format
2.00  rco   07/21/16   Used UINTPTR instead of u32 for Baseaddress
            08/03/16   Add Logo Pixel Alpha support
3.00  vyc   10/04/17   Add second buffer pointer for semi-planar formats
4.00  vyc   04/04/18   Add 8th overlayer
                       Move logo layer enable from bit 8 to bit 15
6.00  pg    01/10/20   Add Colorimetry Feature
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
